<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>排序</title>
</head>

<body>

    <script>
        const arr1 = [1, 5, 2, 7, 9, 4]
        const arr2 = [1, 5, 2, 7, 9, 4]
        const arr3 = [1, 5, 2, 7, 9, 4]

        // 方法一: 冒泡排序
        // 先取出一个,剩下的循环和这个比
        function sort1(arr) {
            for (let i = 0; i < arr.length; i++) {
                for (let j = i + 1; j < arr.length; j++) {
                    if (arr[j] < arr[i]) {
                        [arr[i], arr[j]] = [arr[j], arr[i]]
                    }
                }
            }
            return arr
        }


        // 方法二: 选择排序
        // 每循环一轮确定一个最大值或最小值
        function sort2(arr) {
            for (var i = 0; i < arr.length; i++) {
                var minIndex = i
                for (var j = i + 1; j < arr.length; j++) {
                    if (arr[j] < arr[minIndex]) {
                        minIndex = j
                    }
                }
                [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]
            }
            return arr
        }

        // 方法三: 插入排序
        // 类似扑克起牌时的插牌
        function sort3(arr) {
            for (let i = 1; i < arr.length; i++) {
                for (let j = i; j > 0; j--) {
                    if (arr[j] < arr[j - 1]) {
                        [arr[j], arr[j - 1]] = [arr[j - 1], arr[j]]
                    } else {
                        break
                    }
                }
            }
            return arr
        }

        console.log(sort1(arr1))
        console.log(sort2(arr2))
        console.log(sort3(arr3))
    </script>
</body>

</html>